
package com.shop.cloud.weixin.common.entity;

import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.shop.cloud.common.core.mybatis.typehandler.JsonTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.NotNull;
import java.time.LocalDateTime;
import io.swagger.v3.oas.annotations.media.Schema;
import org.apache.ibatis.type.JdbcType;


/**
 * 小程序认证审核
 *
 * @author
 * @date 2024-05-24 14:27:56
 */
@Data
@TableName("wx_auth_audit")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "小程序认证审核")
public class WxAuthAudit extends Model<WxAuthAudit> {
    private static final long serialVersionUID=1L;

    /**
     * 主键
     */
    @TableId(type = IdType.ASSIGN_ID)
    @NotNull(message = "主键不能为空")
    @Schema(description = "主键")
    private String id;
    /**
     * 创建者
     */
    @Schema(description = "创建者")
    private String createId;
    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private LocalDateTime createTime;
    /**
     * 更新者
     */
    @Schema(description = "更新者")
    private String updateId;
    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    private LocalDateTime updateTime;
    /**
     * 用户备注
     */
    @Schema(description = "用户备注")
    private String remark;
    /**
     * 逻辑删除标记（0：显示；1：隐藏）
     */
    @Schema(description = "逻辑删除标记（0：显示；1：隐藏）")
    private String delFlag;
    /**
     * 所属租户
     */
    @NotNull(message = "所属租户不能为空")
    @Schema(description = "所属租户")
    private String tenantId;
    /**
     * AppID
     */
    @NotNull(message = "AppID不能为空")
    @Schema(description = "AppID")
    private String appId;
    /**
     * 状态码0: 初始状态；1: 任务超时, 24小时内有效；2: 用户授权拒绝；3: 用户授权同意；4: 发起人脸流程；5: 人脸认证失败；6: 人脸认证ok；7: 人脸认证后，已经提交手机号码下发验证码；8: 手机验证失败；9: 手机验证成功；11: 创建认证审核单失败；12: 创建认证审核审核单成功；14: 验证失败；15: 等待支付
     */
    @NotNull(message = "状态码0: 初始状态；1: 任务超时, 24小时内有效；2: 用户授权拒绝；3: 用户授权同意；4: 发起人脸流程；5: 人脸认证失败；6: 人脸认证ok；7: 人脸认证后，已经提交手机号码下发验证码；8: 手机验证失败；9: 手机验证成功；11: 创建认证审核单失败；12: 创建认证审核审核单成功；14: 验证失败；15: 等待支付不能为空")
    @Schema(description = "状态码0: 初始状态；1: 任务超时, 24小时内有效；2: 用户授权拒绝；3: 用户授权同意；4: 发起人脸流程；5: 人脸认证失败；6: 人脸认证ok；7: 人脸认证后，已经提交手机号码下发验证码；8: 手机验证失败；9: 手机验证成功；11: 创建认证审核单失败；12: 创建认证审核审核单成功；14: 验证失败；15: 等待支付")
    private String taskStatus;
    /**
     * 认证数据
     */
    @NotNull(message = "认证数据不能为空")
    @TableField(typeHandler = JsonTypeHandler.class, jdbcType= JdbcType.VARCHAR)
    private JSONObject authData;
    /**
     * 小程序管理员授权链接
     */
    @Schema(description = "小程序管理员授权链接")
    private String authUrl;
    /**
     * 提示信息
     */
    @Schema(description = "提示信息")
    private String message;
    /**
     * 审核机构
     */
    @TableField(typeHandler = JsonTypeHandler.class, jdbcType= JdbcType.VARCHAR)
    private JSONObject dispatchInfo;
    /**
     * 审核单状态，创建认证审核审核单成功后该值有效。0：审核单不存在；1：待支付；2：审核中；3：打回重填；4：认证通过；5：认证最终失败（不能再修改）
     */
    @Schema(description = "审核单状态，创建认证审核审核单成功后该值有效。0：审核单不存在；1：待支付；2：审核中；3：打回重填；4：认证通过；5：认证最终失败（不能再修改）")
    private String applyStatus;
    /**
     * 当审核单被打回重填(apply_status=3)时有效
     */
    @Schema(description = "当审核单被打回重填(apply_status=3)时有效")
    private String refillReason;
    /**
     * 审核最终失败的原因(apply_status=5)时有效
     */
    @Schema(description = "审核最终失败的原因(apply_status=5)时有效")
    private String failReason;
    /**
     * 认证任务id
     */
    @Schema(description = "认证任务id")
    private String taskId;
}
